Ancient Mixins
Core functions, classes, types and interfaces.
Install
npm i --save ancient-mixins
About
Contents superclasses for mixins with your funcionality.
Events
TypeScript typed events. Node EventEmitter based class for listening and emitting events.
Example
import {
Events,
IEvents,
IEventsList,
} from 'ancient-mixins/lib/events';
interface ITestEventsList extends IEventsList {
a: { b: 'c', d?: 'e' };
}
class TestEvents extends Events implements IEvents<ITestEventsList> {}
const events: IEvents<ITestEventsList> = new TestEvents();
const listener = data => console.log('on', data);
events.on('a', listener);
events.on('b', listener);
events.once('a', data => console.log ('once', data));
events.emit('a', { b: 'c' });
events.emit('a', { d: 'e' });
events.emit('b', { x: 'y' });
events.off('a', listener);
events.destroy();
Node
Class Node make Events more material with unique id and isDestroyed state.
List
Unsafe class List to manipulate nodes.
Example
import { List } from 'ancient-mixins/lib/list';
import { Node } from 'ancient-mixins/lib/node';
const list = new List();
const node = new Node();
List.on('anyNodeEvent', () => console.log ('anyNodeEvent'));
List.add(node);
node.emit('anyNodeEvent');
Manager
Class Manager gives control functionality for the lists of nodes and has own events. Contains class List, which has role to communicate node events and manager events.
Example
import { Node } from 'ancient-mixins/lib/node';
import { Manager } from 'ancient-mixins/lib/manager';
const manager = new Manager();
const node = new Node();
manager.on('removed', () => console.log('removed'));
manager.on('added', () => console.log('added'));
manager.add(node);
manager.remove(node);
manager.add(node);
node.destroy();